/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package saa.dao.usuario;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import saa.dominio.usuario.Usuario;

@Stateless
public class UsuarioDAO implements UsuarioDAOInterface {

    @PersistenceContext(unitName = "SAAPU")
    private EntityManager em;

    @Override
    public List<Usuario> listar() {
        try {
            return em
                    .createNamedQuery("Usuarios", Usuario.class)
                    .getResultList();
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public Usuario buscar(long id) {
        try {
            return em
                    .createNamedQuery("Usuario.id", Usuario.class)
                    .setParameter("id", id)
                    .getSingleResult();
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public Usuario buscar(String email) {
        try {
            return em
                    .createNamedQuery("Usuario.email", Usuario.class)
                    .setParameter("email", email)
                    .getSingleResult();
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public Usuario adicionar(Usuario usuario) {
        try {
            if (buscar(usuario.getEmail()) == null) {
                em.persist(usuario);
                return usuario;
            }
            return null;
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public Usuario atualizar(Usuario usuario) {
        try {
            return em.merge(usuario);
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public boolean deletar(long id) {
        try {
            em.remove(buscar(id));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public boolean deletar(String email) {
        try {
            em.remove(buscar(email));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

}
